.\"   $Id: composebddnode.3,v 1.1 2002/03/18 11:26:50 ludo Exp $
.\" @(#)composebddnode.2 2.7 96/07/02 ; Labo masi cao-vlsi; Author : Jacomme Ludovic
.TH COMPOSEBDDNODE 3 "October 1, 1997" "ASIM/LIP6" "BDD FUNCTIONS"
.SH NAME
composebddnode \- substitutes a variable by a \fBbdd\fP in another \fBbdd\fP.

.so man1/alc_origin.1
.SH SYNOPSIS
.nf
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
#include "bdd101.h"
bddnode \(**composebddnode( BddSystem, BddNode, Variable, BddSubst )
  bddsystem \(**BddSystem;
  bddnode   \(**BddNode;
  bddvar     Variable;
  bddnode   \(**BddSubst;
.ft R
.fi
.SH PARAMETERS
.TP 20
\fIBddSystem\fP
The \fBbdd\fP system.
.TP
\fIBddNode\fP
The \fBbdd\fP node.
.TP
\fIVariable\fP
The variable to find.
.TP
\fIBddSubst\fP
The \fBbdd\fP to substitute with.
.SH DESCRIPTION
\fBcomposebddnode\fP substitutes all the occurency of the variable \fIVariable\fP
in the \fBbdd\fP node \fIBddNode\fP by the \fBbdd\fP node \fIBddSubst\fP, in the
\fBbdd\fP system \fIBddSystem\fP.
If a null pointer is given, the default \fBbdd\fP system is used.
.br
.SH RETURN VALUE
\fBcomposebddnode\fP returns the resulting \fBbdd\fP node.
.SH ERRORS
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
"variable xxx out of range, error !"
.ft R
.RS
The \fIVariable\fP parameter must be less or equal to
the \fIBddSystem->NUMBER_VAR\fP field.
.RE
.SH EXAMPLE
.ta 3n 6n 9n 12n 15n 18n 21n
.nf
.if n \{\
.ft B \}
.if t \{\
.ft CR \}
#include "bdd101.h"
   bddsystem  \(**BddSystem;
   bddcircuit \(**BddCircuit;
   bddnode    \(**BddVariable;
   bddnode    \(**BddNode;
   bddnode    \(**BddSubst;
   chain_list \(**Expr;
   bddvar         Variable;
   BddSystem  = createbddsystem( 100, 1000, 100, 50000 );
   BddCircuit = createbddcircuit( "hello_world", 10, 10, BddSystem );
   Expr = createablbinexpr( ABL_AND,
                            createablatom( "i0" ),
                            createablatom( "i1" ) );
   BddNode = addbddcircuitabl( BddCircuit, Expr );
   freeablexpr( Expr );
   Expr = createablbinexpr( ABL_OR,
                            createablatom( "i2" ),
                            createablatom( "i3" ) );
   BddSubst = addbddcircuitabl( BddCircuit, Expr );
   freeablexpr( Expr );
   BddVariable = searchbddcircuitin( (bddcircuit \(**)0, "i0" );
   Variable = getbddvarbyindex( (bddsystem \(**)0, BddVariable->INDEX );
   BddNode = composebddnode( (bddsystem \(**)0, BddNode, Variable, BddSubst );
   Expr = convertbddcircuitabl( BddCircuit, BddNode );
   /* displays (i1 and (i2 or i3)) */
   viewablexpr( Expr, ABL_VIEW_VHDL );
   freeablexpr( Expr );
   destroybddsystem( (bddsystem \(**)0 );
   destroybddcircuit( (bddcircuit \(**)0 );
.ft R
.fi
.SH SEE ALSO
.BR bdd (1)


.so man1/alc_bug_report.1

